package model;

import java.util.ArrayList;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

public class Lugar {
	private String nombre;
	private Pista pistaFacil;
	private Pista pistaMedia;
	private Pista pistaDificil;
	private ArrayList<Pista> pistas;
	
	public Lugar(String nomb){
		this.nombre = nomb;
	}
	
	public Pista obtenerPistaSegunRango(Novato nov){
		return this.pistaFacil;
 	}
 		
	public Pista obtenerPistaSegunRango(Investigador inv){
	 	return this.pistaMedia;
	}
	
	public Pista obtenerPistaSegunRango(Detective det){
		return this.pistaMedia;
	}
		
	public Pista obtenerPistaSegunRango(Sargento sar){
		 return this.pistaDificil;
	}

	public String obtenerNombre() {
		return this.nombre;
	}
	
	public void setPistaFacil(Pista facil){
		this.pistaFacil = facil;
	}
	
	public void setPistaMedia(Pista media){
		this.pistaMedia = media;
	}
	
	public void setPistaDificil(Pista dificil){
		this.pistaDificil = dificil;
	}
	
	
	
	public Element serializar (Document doc){
		Element elementoLugar = doc.createElement("Lugar");
		elementoLugar.setAttribute ("nombre", this.nombre);
		Element elementoPistas = doc.createElement("Pista");
		elementoLugar.appendChild(elementoPistas);
		for (Pista pista: this.pistas){
			elementoPistas.appendChild(pista.serializar(doc));}
		
		return elementoLugar;
	}
	
	
			
		
		public static Lugar hidratar (Node elementoLugar){
		Lugar nuevoLugar= new Lugar("");
		nuevoLugar.nombre =((Element)elementoLugar).getAttribute("nombre");
		Element elementoPistas= (Element)(elementoLugar).getChildNodes().item(0);
		for (int j=0; j<elementoPistas.getChildNodes().getLength(); j++){
			Element elementoPista= (Element)elementoPistas.getChildNodes().item(j);
			if ((elementoPista.getNodeName())=="PistaFacil"){
				Pista pista1= Pista.hidratar(elementoPista);
				nuevoLugar.pistaFacil=pista1;
				
				} 
			if ((elementoPista.getNodeName())=="PistaMedia"){
				Pista pista2= Pista.hidratar(elementoPista);
				nuevoLugar.pistaMedia=pista2;
				
				} 
			if ((elementoPista.getNodeName()=="PistaDificil")){
				Pista pista3= Pista.hidratar(elementoPista);
				nuevoLugar.pistaDificil=pista3;
			
				} 
			
			}
		
				return nuevoLugar;
		
		}
	
}
